#include "main.h"
#include "数据库.h"
#include "管理员.h"

int B_find_user(int fd)
{
    printf("请选择你要查找的方式\n");
    printf("1.查看所有组长\n");
    printf("2.通过用户名查找\n");
    printf("3.通过项目组查找\n");
    char ch[16];
    scanf("%s", ch);
    if (strcmp(ch, "1") == 0)
    {
        MSG msg;
        msg.type = printfboss;
        send(fd, &msg, sizeof(msg), 0);
        while (1)
        {
            recv(fd, &msg, sizeof(msg), 0);
            if (msg.type == over)
            {
                break;
            }
            B_REGIST *p = (B_REGIST *)msg.data;
            char type[128];
            if (p->type_B == 0)
            {
                strcpy(type, "行政管理部门");
            }
            else if (p->type_B == 1)
            {
                strcpy(type, "人事部门");
            }
            else if (p->type_B == 2)
            {
                strcpy(type, "财务部门");
            }
            else if (p->type_B == 3)
            {
                strcpy(type, "研发部");
            }
            else if (p->type_B == 4)
            {
                strcpy(type, "销售部");
            }
            printf("姓名:%s\n电话号码:%s\n部门:%s\n", p->name, p->tel, type);
            printf("--------------------------------------------------\n");
        }
    }
    else if (strcmp(ch, "2") == 0)
    {
        char name[128];
        printf("请输入用户名\n");
        scanf("%s", name);
        MSG msg;
        msg.type = printfboss;
        send(fd, &msg, sizeof(msg), 0);
        while (1)
        {
            recv(fd, &msg, sizeof(msg), 0);
            if (msg.type == over)
            {
                break;
            }
            B_REGIST *p = (B_REGIST *)msg.data;
            if (strcmp(p->name, name) == 0)
            {
                printf("找到组长\n");
                char type[128];
                if (p->type_B == 0)
                {
                    strcpy(type, "行政管理部门");
                }
                else if (p->type_B == 1)
                {
                    strcpy(type, "人事部门");
                }
                else if (p->type_B == 2)
                {
                    strcpy(type, "财务部门");
                }
                else if (p->type_B == 3)
                {
                    strcpy(type, "研发部");
                }
                else if (p->type_B == 4)
                {
                    strcpy(type, "销售部");
                }
                printf("姓名:%s\n电话号码:%s\n部门:%s\n", p->name, p->tel, type);
                printf("--------------------------------------------------\n");
            }
            else
            {
                printf("未找到组长\n");
            }
        }
    }
    else if (strcmp(ch, "3") == 0)
    {
        char type[128];
        printf("请选择你要查找的部门\n");
        printf("1.行政管理部门\n");
        printf("2.人事部门\n");
        printf("3.财务部门\n");
        printf("4.研发部\n");
        printf("5.销售部\n");
        scanf("%s", ch);
        MSG msg;
        msg.type = printfboss;
        send(fd, &msg, sizeof(msg), 0);
        while (1)
        {
            recv(fd, &msg, sizeof(msg), 0);
            if (msg.type == over)
            {
                break;
            }
            B_REGIST *p = (B_REGIST *)msg.data;
            char type[128];
            if (p->type_B == 0)
            {
                strcpy(type, "行政管理部门");
            }
            else if (p->type_B == 1)
            {
                strcpy(type, "人事部门");
            }
            else if (p->type_B == 2)
            {
                strcpy(type, "财务部门");
            }
            else if (p->type_B == 3)
            {
                strcpy(type, "研发部");
            }
            else if (p->type_B == 4)
            {
                strcpy(type, "销售部");
            }

            if (p->type_B == 0 && strcmp(ch, "1") == 0)
            {
                printf("找到组长\n");
                printf("姓名:%s\n电话号码:%s\n部门:%s\n", p->name, p->tel, type);
                printf("--------------------------------------------------\n");
            }
            else if (p->type_B == 1 && strcmp(ch, "2") == 0)
            {
                printf("找到组长\n");
                printf("姓名:%s\n电话号码:%s\n部门:%s\n", p->name, p->tel, type);
                printf("--------------------------------------------------\n");
            }
            else if (p->type_B == 2 && strcmp(ch, "3") == 0)
            {
                printf("找到组长\n");
                printf("姓名:%s\n电话号码:%s\n部门:%s\n", p->name, p->tel, type);
                printf("--------------------------------------------------\n");
            }
            else if (p->type_B == 3 && strcmp(ch, "4") == 0)
            {
                printf("找到组长\n");
                printf("姓名:%s\n电话号码:%s\n部门:%s\n", p->name, p->tel, type);
                printf("--------------------------------------------------\n");
            }
            else if (p->type_B == 4 && strcmp(ch, "5") == 0)
            {
                printf("找到组长\n");
                printf("姓名:%s\n电话号码:%s\n部门:%s\n", p->name, p->tel, type);
                printf("--------------------------------------------------\n");
            }
            else
            {
                printf("没有找到组长\n");
            }
        }
    }
    return 0;
}

int find_user(int fd)
{

    printf("请选择你要查找的方式\n");
    printf("1.查看所有用户\n");
    printf("2.通过用户名查找\n");
    printf("3.通过工号查找\n");
    printf("4.通过项目组查找\n");
    char ch[16];
    scanf("%s", ch);
    if (strcmp(ch, "1") == 0)
    {
        MSG msg;
        msg.type = printfuser;
        send(fd, &msg, sizeof(msg), 0);
        while (1)
        {
            recv(fd, &msg, sizeof(msg), 0);
            if (msg.type == over)
            {
                break;
            }
            W_REGIST *p = (W_REGIST *)msg.data;
            char type[128];
            if (p->type_W == 0)
            {
                strcpy(type, "行政管理部门");
            }
            else if (p->type_W == 1)
            {
                strcpy(type, "人事部门");
            }
            else if (p->type_W == 2)
            {
                strcpy(type, "财务部门");
            }
            else if (p->type_W == 3)
            {
                strcpy(type, "研发部");
            }
            else if (p->type_W == 4)
            {
                strcpy(type, "销售部");
            }
            printf("姓名:%s\n电话号码:%s\n部门:%s\n", p->name, p->tel, type);
            printf("--------------------------------------------------\n");
        }
    }
    else if (strcmp(ch, "2") == 0)
    {
        char name[128];
        printf("请输入用户名\n");
        scanf("%s", name);
        MSG msg;
        msg.type = printfuser;
        send(fd, &msg, sizeof(msg), 0);
        while (1)
        {
            recv(fd, &msg, sizeof(msg), 0);
            if (msg.type == over)
            {
                break;
            }
            W_REGIST *p = (W_REGIST *)msg.data;
            if (strcmp(p->name, name) == 0)
            {
                printf("找到用户\n");
                char type[128];
                if (p->type_W == 0)
                {
                    strcpy(type, "行政管理部门");
                }
                else if (p->type_W == 1)
                {
                    strcpy(type, "人事部门");
                }
                else if (p->type_W == 2)
                {
                    strcpy(type, "财务部门");
                }
                else if (p->type_W == 3)
                {
                    strcpy(type, "研发部");
                }
                else if (p->type_W == 4)
                {
                    strcpy(type, "销售部");
                }
                printf("姓名:%s\n工号:%d\n电话号码:%s\n部门:%s\n", p->name, p->numb, p->tel, type);
                printf("--------------------------------------------------\n");
            }
            else
            {
                printf("未找到用户\n");
            }
        }
    }
    else if (strcmp(ch, "3") == 0)
    {
        int numb;
        printf("请输入工号\n");
        scanf("%d", &numb);
        MSG msg;
        msg.type = printfuser;
        send(fd, &msg, sizeof(msg), 0);
        while (1)
        {
            recv(fd, &msg, sizeof(msg), 0);
            if (msg.type == over)
            {
                break;
            }
            W_REGIST *p = (W_REGIST *)msg.data;
            if (p->numb == numb)
            {
                printf("找到用户\n");
                char type[128];
                if (p->type_W == 0)
                {
                    strcpy(type, "行政管理部门");
                }
                else if (p->type_W == 1)
                {
                    strcpy(type, "人事部门");
                }
                else if (p->type_W == 2)
                {
                    strcpy(type, "财务部门");
                }
                else if (p->type_W == 3)
                {
                    strcpy(type, "研发部");
                }
                else if (p->type_W == 4)
                {
                    strcpy(type, "销售部");
                }
                printf("姓名:%s\n工号:%d\n电话号码:%s\n部门:%s\n", p->name, p->numb, p->tel, type);
                printf("--------------------------------------------------\n");
            }
            else
            {
                printf("未找到用户\n");
            }
        }
    }
    else if (strcmp(ch, "4") == 0)
    {
        char type[128];

        printf("请选择你要查找的部门\n");
        printf("1.行政管理部门\n");
        printf("2.人事部门\n");
        printf("3.财务部门\n");
        printf("4.研发部\n");
        printf("5.销售部\n");
        scanf("%s", ch);
        MSG msg;
        msg.type = printfuser;
        send(fd, &msg, sizeof(msg), 0);
        while (1)
        {
            recv(fd, &msg, sizeof(msg), 0);
            char type[128];
            W_REGIST *p = (W_REGIST *)msg.data;
            if (p->type_W == 0)
            {
                strcpy(type, "行政管理部门");
            }
            else if (p->type_W == 1)
            {
                strcpy(type, "人事部门");
            }
            else if (p->type_W == 2)
            {
                strcpy(type, "财务部门");
            }
            else if (p->type_W == 3)
            {
                strcpy(type, "研发部");
            }
            else if (p->type_W == 4)
            {
                strcpy(type, "销售部");
            }
            if (msg.type == over)
            {
                break;
            }

            if (p->type_W == 0 && strcmp(ch, "1") == 0)
            {
                printf("找到用户\n");
                printf("姓名:%s\n工号:%d\n电话号码:%s\n部门:%s\n", p->name, p->numb, p->tel, type);
                printf("--------------------------------------------------\n");
            }
            else if (p->type_W == 1 && strcmp(ch, "2") == 0)
            {
                printf("找到用户\n");
                printf("姓名:%s\n工号:%d\n电话号码:%s\n部门:%s\n", p->name, p->numb, p->tel, type);
                printf("--------------------------------------------------\n");
            }
            else if (p->type_W == 2 && strcmp(ch, "3") == 0)
            {
                printf("找到用户\n");
                printf("姓名:%s\n工号:%d\n电话号码:%s\n部门:%s\n", p->name, p->numb, p->tel, type);
                printf("--------------------------------------------------\n");
            }
            else if (p->type_W == 3 && strcmp(ch, "4") == 0)
            {
                printf("找到用户\n");
                printf("姓名:%s\n工号:%d\n电话号码:%s\n部门:%s\n", p->name, p->numb, p->tel, type);
                printf("--------------------------------------------------\n");
            }
            else if (p->type_W == 4 && strcmp(ch, "5") == 0)
            {
                printf("找到用户\n");
                printf("姓名:%s\n工号:%d\n电话号码:%s\n部门:%s\n", p->name, p->numb, p->tel, type);
                printf("--------------------------------------------------\n");
            }
            else
            {
                printf("没有找到用户\n");
            }
        }
    }
}
int printuser(int fd)
{
    printf("请选择你要查找的身份\n");
    printf("1.组员\n");
    printf("2.组长\n");
    char ch[16];
    scanf("%s", ch);
    if (strcmp(ch, "1") == 0)
    {
        find_user(fd);
    }
    else if (strcmp(ch, "2") == 0)
    {
        B_find_user(fd);
    }
}

int change_user(int fd)
{
    printf("请选择你要修改的信息\n");
    printf("1.工号\n");
    printf("2.姓名\n");
    printf("3.密码\n");
    printf("4.手机号\n");
    char ch[16];
    scanf("%s", ch);
    if (strcmp(ch, "1") == 0)
    {
        NUMB numb;
        printf("请输入要修改的工号:");
        scanf("%d", &numb.old_num);
        printf("请输入新的工号:");
        scanf("%d", &numb.new_num);
        MSG msg;
        memcpy(msg.data, &numb, sizeof(numb));
        msg.type = changeuser_id;
        send(fd, &msg, sizeof(msg), 0);

        recv(fd, &msg, sizeof(msg), 0);
        if (msg.type == yes)
        {
            printf("修改成功\n");
        }
        else
        {
            printf("修改失败\n");
        }
    }
    else if (strcmp(ch, "2") == 0)
    {
        NAME name;
        printf("请输入要修改的姓名:");
        scanf("%s", name.old_name);
        getchar(); // 吸收换行符
        printf("请输入新的姓名:");
        scanf("%s", name.new_name);
        getchar(); // 吸收换行符
        MSG msg;
        msg.type = changeuser_name;
        memcpy(msg.data, &name, sizeof(name));
        send(fd, &msg, sizeof(msg), 0);

        recv(fd, &msg, sizeof(msg), 0);
        if (msg.type == yes)
        {
            printf("修改成功\n");
        }
        else
        {
            printf("修改失败\n");
        }
    }
    else if (strcmp(ch, "3") == 0)
    {
        PASSWORD pwd;
        printf("请输入要修改的用户名:");
        scanf("%s", pwd.name);
        getchar(); // 吸收换行符
        printf("请输入旧密码:");
        scanf("%s", pwd.old_pwd);
        getchar(); // 吸收换行符
        printf("请输入新密码:");
        scanf("%s", pwd.new_pwd);
        getchar(); // 吸收换行符
        MSG msg;
        msg.type = changeuser_pwd;
        memcpy(msg.data, &pwd, sizeof(pwd));
        send(fd, &msg, sizeof(msg), 0);

        recv(fd, &msg, sizeof(msg), 0);
        if (msg.type == yes)
        {
            printf("修改成功\n");
        }
        else
        {
            printf("修改失败\n");
        }
    }
    else if (strcmp(ch, "4") == 0)
    {
        PHONE phone;
        printf("请输入要修改的用户名:");
        scanf("%s", phone.name);
        getchar(); // 吸收换行符
        printf("请输入旧手机号:");
        scanf("%s", phone.old_tel);
        getchar(); // 吸收换行符
        printf("请输入新手机号:");
        scanf("%s", phone.new_tel);
        getchar(); // 吸收换行符
        MSG msg;
        msg.type = changeuser_phone;
        memcpy(msg.data, &phone, sizeof(phone));
        send(fd, &msg, sizeof(msg), 0);

        recv(fd, &msg, sizeof(msg), 0);
        if (msg.type == yes)
        {
            printf("修改成功\n");
        }
        else
        {
            printf("修改失败\n");
        }
    }
    else
    {
        printf("无效的选择，请重新选择。\n");
    }
    return 0;
}
int B_change_user(int fd)
{
    printf("请选择你要修改的信息\n");
    printf("1.姓名\n");
    printf("2.密码\n");
    printf("3.手机号\n");
    char ch[16];
    scanf("%s", ch);
    if (strcmp(ch, "1") == 0)
    {
        NAME name;
        printf("请输入要修改的用户名:");
        scanf("%s", name.old_name);
        getchar(); // 吸收换行符
        printf("请输入新的姓名:");
        scanf("%s", name.new_name);
        getchar(); // 吸收换行符
        MSG msg;
        msg.type = changeboss_name;
        memcpy(msg.data, &name, sizeof(name));
        send(fd, &msg, sizeof(msg), 0);

        recv(fd, &msg, sizeof(msg), 0);
        if (msg.type == yes)
        {
            printf("修改成功\n");
        }
        else
        {
            printf("修改失败\n");
        }
    }
    else if (strcmp(ch, "2") == 0)
    {
        PASSWORD pwd;
        printf("请输入要修改的用户名:");
        scanf("%s", pwd.name);
        getchar(); // 吸收换行符
        printf("请输入旧密码:");
        scanf("%s", pwd.old_pwd);
        getchar(); // 吸收换行符
        printf("请输入新密码:");
        scanf("%s", pwd.new_pwd);
        getchar(); // 吸收换行符
        MSG msg;
        msg.type = changeboss_pwd;
        memcpy(msg.data, &pwd, sizeof(pwd));
        send(fd, &msg, sizeof(msg), 0);

        recv(fd, &msg, sizeof(msg), 0);
        if (msg.type == yes)
        {
            printf("修改成功\n");
        }
        else
        {
            printf("修改失败\n");
        }
    }
    else if (strcmp(ch, "3") == 0)
    {
        PHONE phone;
        printf("请输入要修改的用户名:");
        scanf("%s", phone.name);
        getchar(); // 吸收换行符
        printf("请输入旧手机号:");
        scanf("%s", phone.old_tel);
        getchar(); // 吸收换行符
        printf("请输入新手机号:");
        scanf("%s", phone.new_tel);
        getchar(); // 吸收换行符
        MSG msg;
        msg.type = changeboss_phone;
        memcpy(msg.data, &phone, sizeof(phone));
        send(fd, &msg, sizeof(msg), 0);

        recv(fd, &msg, sizeof(msg), 0);
        if (msg.type == yes)
        {
            printf("修改成功\n");
        }
        else
        {
            printf("修改失败\n");
        }
    }
    else
    {
        printf("无效的选择，请重新选择。\n");
    }
    return 0;
}

int changemeun(int fd)
{
    printf("请选择你要修改的身份\n");
    printf("1.组员\n");
    printf("2.组长\n");
    char ch[16];
    scanf("%s", ch);
    if (strcmp(ch, "1") == 0)
    {
        change_user(fd);
    }
    else if (strcmp(ch, "2") == 0)
    {
        B_change_user(fd);
    }
    else
    {
        printf("无效的选择，请重新选择。\n");
    }
    return 0;
}

int del_user(int fd)
{
    printf("请选择你要删除的工号\n");
    int user_id;
    scanf("%d", &user_id);

    // 构建删除用户的 SQL 语句
    char sql[256];
    sprintf(sql, "DELETE FROM 组员名单 WHERE 工号 = %d;", user_id);

    // 创建 MSG 结构体并设置类型和数据
    MSG msg;
    msg.type = deleteuser;
    memcpy(msg.data, sql, sizeof(sql));

    // 发送删除请求到服务器
    send(fd, &msg, sizeof(msg), 0);

    // 接收服务器的响应
    recv(fd, &msg, sizeof(msg), 0);

    if (msg.type == yes)
    {
        printf("删除成功\n");
    }
    else
    {
        printf("删除失败\n");
    }

    return 0;
}

int del_Boss(int fd)
{
    printf("请选择你要删除的用户名\n");
    char username[128];
    scanf("%s", username);

    // 构建删除用户的 SQL 语句
    char sql[256];
    sprintf(sql, "DELETE FROM 组长名单 WHERE 姓名 = '%s';", username);

    // 创建 MSG 结构体并设置类型和数据
    MSG msg;
    msg.type = deleteboss;
    memcpy(msg.data, sql, sizeof(sql));

    // 发送删除请求到服务器
    send(fd, &msg, sizeof(msg), 0);

    // 接收服务器的响应
    recv(fd, &msg, sizeof(msg), 0);

    if (msg.type == yes)
    {
        printf("删除成功\n");
    }
    else
    {
        printf("删除失败\n");
    }

    return 0;
}

int delmeun(int fd){
    printf("请选择你要删除的身份\n");
    printf("1.组员\n");
    printf("2.组长\n");
    char ch[16];
    scanf("%s", ch);
    if (strcmp(ch, "1") == 0)
    {
        del_user(fd);
    }
    else if (strcmp(ch, "2") == 0)
    {
        del_Boss(fd);
    }
    else
    {
        printf("无效的选择，请重新选择。\n");
    }
}